﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Collections;
using System.Xml.Linq;

namespace CodeCounsel.SharePoint.RibbonDesigner.Model
{
    public abstract class DomainElementContainer<T>
        : NamedDomainElement, IEnumerable<T>
        where T: DomainElement
    {
        public DomainElementContainer(XElement dataModel, DomainModelSource source)
            : base(dataModel, source)
        {
        }

        public DomainElementContainer()
        {
        }

        public IEnumerator<T> GetEnumerator()
        {
            return Children.OfType<T>().GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }

        protected override bool HandleRemove(XElement element)
        {
            return false;
        }
    }
}
